home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 November: Tool Chest / Dev.CD Nov 98 TC.toast / Tool Chest / Development Kits / MPW etc. / MPW-PR / Interfaces&Libraries / Interfaces / CIncludes / setjmp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-11  |  1.4 KB  |  77 lines  |  [TEXT/MPS ]

  1. /*
  2.    SetJmp.h
  3.  
  4.    Copyright Apple Computer, Inc.    1986-1990, 1993-1995, 1998
  5.    All rights reserved.
  6.  */
  7.  
  8.  
  9. #ifndef __SETJMP__
  10. #define __SETJMP__
  11.  
  12. #ifdef __CFM68K__
  13.     /* We MUST use the new, larger jmp_buf for CFM-68K */
  14.     #undef OLD_JMPBUF
  15. #endif
  16.  
  17. #if defined (powerc)
  18. #if defined (__VEC__)
  19.     typedef struct {
  20.         long    LR;
  21.         long    CR;
  22.         long    SP;
  23.         long    TOC;
  24.         long    RESVD_1;
  25.         long    gprs[31-13+1];
  26.         double    fprs[31-14+1];
  27.         double    FPSCR;
  28.         long    RESVD_2;
  29.         long    RESVD_3;
  30.         vector signed long vrs[31-20+1];
  31.         long    vscr;
  32.         long    vrsave;
  33.     } jmp_buf[1];
  34. #else  // !__VEC__
  35.     typedef long *jmp_buf[64];  /*  PowerPC: LR,CR,SP,TOC,RESVD,R13-R31,FP14-FP31,FPSCR,RESVD,RESVD  */
  36. #endif // !__VEC__
  37. #elif defined (OLD_JMPBUF)
  38.     typedef long *jmp_buf[12];    /*    old 68K: D2-D7,PC,A2-A4,A6,SP  */
  39. #else
  40.     typedef long *jmp_buf[16];    /*    new 68K: D2-D7,PC,A2-A4,A6,SP,FLAGS,A5,RESVD,RESVD  */
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if defined (__powerc) || defined (powerc) || defined (__CFM68K__)
  48.     #pragma import on
  49. #endif
  50.  
  51. #if defined(__VEC__)
  52.  
  53.     extern int __vec_setjmp(jmp_buf env);
  54.     extern void __vec_longjmp(jmp_buf env, int val);
  55.     
  56.     #define setjmp(env) __vec_setjmp(env)
  57.     #define longjmp(env, val) __vec_longjmp(env, val)
  58.  
  59. #else
  60.  
  61.     extern int __setjmp(jmp_buf env);
  62.     
  63.     #define setjmp(env) __setjmp(env)
  64.     extern void longjmp(jmp_buf env, int val);
  65.  
  66. #endif
  67.  
  68. #if defined (__powerc) || defined (powerc) || defined (__CFM68K__)
  69.     #pragma import off
  70. #endif
  71.  
  72. #ifdef __cplusplus
  73. }
  74. #endif
  75.  
  76. #endif
  77.